'''
目的：对集合或列表的每个元素进行操作处理，随后会生成一个新的集合或列表
map(函数,列表/集合) 修改元素值
filter(函数,列表/集合) 过滤元素
sorted(列表)  排序


'''
# 将列表的每个元素转变成整数
nums =["1",'32','4','67','34']
newnums=[]
for i in nums:
    newnums.append(int(i))
print(newnums)

'''
map的第一个参数：函数,函数的参数为列表的每一个元素，在该函数中，对每个元素进行了处理，处理后的元素将存储到一个新的列表中，新的列表就是map的返回值
第二个参数：处理的列表
'''

list1 = list(map(int,nums))
print(type(list1))
print(list1)

def change(x):
    return x+"----"
list2 = list(map(change,nums))
print(list2)

list3= list(map(lambda a:a+"---",nums))
print(list3)

set1= {4,5,6,7}
set2= list(map(lambda x:x**3,set1))
print(set2)

names =["张三","李四","王五五","赵六六"]
# 将列表中的每个姓去掉
print(list(map(lambda x:x[1::],names)))

'''
filter(函数,列表)
函数：函数的参数为列表的每个元素，在函数中对列表的元素进行条件判断，
判断结果为真，则保留该元素,如果判断为假，则过滤掉该元素，将保留的元素存储到返回的列表中
'''
# 过滤回文，将回文数、回文字符串筛选出来
strings = [191, 1212, 123321, "abcdba", "abadcdaba"]
list1 = list(filter(lambda x:str(x)==str(x)[::-1],strings))
print(list1)

# "保留字符串长度小于5,数字的位数也要小于5位"
list2= list(filter(lambda x:len(str(x))<5,strings))
print(list2)

# "保留字符串长度小于5,数字的位数也要小于5位,并且是回文"
list3= list(filter(lambda x:len(str(x))<5 and str(x)==str(x)[::-1] ,strings))
print(list3)

'''
sorted(列表)
'''
list4 =[3,4,54,45,12,5,3,23]
list5= sorted(list4)
list6= sorted(list4,reverse=True)
print(list6)

names = ["tom","lucy","jack","mandy"]
list7= sorted(names)
print(list7)

# 改变排序规则 按照字符串的长度排序
list8=sorted(names,key = lambda x:len(x))
print(list8)






